package com.lg.concurrent.lock;

/**
 * 可以在 方法上 静态方法
 * 代码块都不可以                      代码块 静态代码块 都是 不可以的
 * 对象
 */
public  class  WhereIsSync {
    //多次创建 静态代码块只会执行 一遍， 他也是线程安全的
    static {
        System.out.println("test7");
    }
     {
        System.out.println("test5");
    }
    synchronized public  void test(){

        System.out.println("test1");

        synchronized (this){
            System.out.println("test2");
        }

        System.out.println("test3");
    }

    /**
     *
     * static方法 锁是在 class对象上
     * 非static方法  锁是在 类对象上
     */
    synchronized public  static  void test2(){

        System.out.println("test9");
        synchronized (WhereIsSync.class){

        }
        System.out.println("test10");
    }

    static {
        System.out.println("test8");
    }

    {
        System.out.println("test6");
    }
    public static void main(String[] args) {
        WhereIsSync whereIsSync = new WhereIsSync();
        WhereIsSync whereIsSync1 = new WhereIsSync();
        whereIsSync.test();


    }
}
